﻿

// 洋葱路由
// 假设注册顺序是 A->B->c
// 那么顺序应该就是 A->B->C->B->A
// 当然,这个顺序是用了 下一个路由(Next) 命令的前提下
// 如果没有使用 下一个路由(Next) 会直接执行完毕并且退出时不再继续

函数 中间件A(Wo上下文& context)
	//进入中间件
	context.回复体_写入文本(U"<h1>进入中间件A</h1><br>")
	// Next 下一个路由,会直接阻塞当前路由并迭代到下一个路由
	// 直到执行完毕或者被终止返回
	context.下一个路由()
	// 后面的中间件已全部执行完毕
	// 有序退出至当前函数
	context.回复体_写入文本(U"<h1>退出中间件A</h1><br>")

函数 中间件B(Wo上下文& context)
	//进入中间件
	context.回复体_写入文本(U"<h1>进入中间件B</h1><br>")
	//鉴权
	单文本型 name = context.取参数(U"name")
	如果 name != U"huiyi"
		//鉴权失败
		context.回复体_写入文本(U"<h2>用户不正确</h2><br>")
		//终止
		context.终止路由()
		//终止路由只是终止了路由链
		//代码流需要手动返回
		返回
	//没有使用 下一个路由() 
	//
	context.回复体_写入文本(U"<h1>中间件B执行完毕</h1><br>")
	
函数 hello(Wo上下文& context)
	单文本型 回复数据 = U"<h1>hello "
	回复数据 = context.取参数(A"name") + U"</h1><br>"
	context.回复体_写入文本(回复数据)


函数 整型 入口函数()
	Web_初始化环境()
	Wo服务器类 server = Wo取全局服务器()
	//注册路由分组
	// /group
	Wo路由组 路由分组A(A"/group")
	// 给 /group 这个分组插上中间件
	// 这样每次访问进来都会优先经过这个中间件
	路由分组A.注册中间件(中间件A)
	// 从 /group 分组创建 /{name} 分组
	// 现在 路由分组B 的路径是 /group/{name}
	// 同时 路由分组B 继承了 路由分组A 的中间件
	Wo路由组 路由分组B = 路由分组A.创建分组(A"/{name}")
	// 为 路由分组B 插入中间件
	路由分组B.注册中间件(中间件B)
	//注册业务路由,同时为业务路由加上分组路由
	server.GET(A"/hello",hello,&路由分组B)
	server.绑定(A"0.0.0.0", 8090)
	server.启动()
	Web_清理环境()
	返回 0
